Function.prototype._bind = function (context, ...args) {
  const originFun = this;
  const bindFun = function (...innerArgs) {
    return originFun.apply(
      this instanceof bindFun ? this : context,
      args.concat(innerArgs)
    );
  };
  bindFun.prototype = Object.create(originFun.prototype);
  return bindFun;
};
